package com.ssy.lingxi.contract.esign.response;

import lombok.Data;

import java.util.List;

@Data
public class AuthFlowDetailResponse {
    /**
     * 认证流程Id
     */
    private String flowId;
    /**
     * 流程状态 ：
     * INIT(已发起) 注：该状态下e签宝不会计费；
     * ING(进行中)；
     * SUCCESS(已成功)；
     * FAIL(已失败)；
     */
    private String flowStatus;
    /**
     * 认证流程主体:
     * ORGANIZATION（组织机构）；
     * INDIVIDUAL（个人）；
     */
    private String objectType;
    /**
     * 认证业务流程发起时的上下文id
     */
    private String contextId;
    /**
     * 认证状态为失败时,失败的原因描述
     */
    private String failReason;
    /**
     * 流程创建时间时间戳值
     */
    private Long createTime;
    /**
     * 流程最后一次状态更新时间时间戳值
     */
    private Long modifyTime;
    /**
     * 流程最后一次状态更新时间时间戳值
     */
    private List<SignFlow> subFlows;
    /**
     * 	认证流程关联的附加业务流程的集合,
     * 	当objectType=ORGANIZATION（组织结构人认证）,
     * 	可能附加个人认证流程,经办人个人身份认证
     */
    private List<RelatedFlow> relatedFlows;

    @Data
    public static class SignFlow {
        /**
         * 认证流程关联的子认证流程的集合
         */
        private String subFlowId;
        /**
         * 	认证流程关联的子认证流程类型,可用于查询子认证流程详情：
         * 1）企业相关认证详情
         * ORGANIZATION_INFO_AUTH（企业信息比对）；
         * ORGANIZATION_TRANSFER_RANDOM_AMOUNT（企业随机金额打款）；ORGANIZATION_ZMXY（企业芝麻认证）；
         * LEGAL_REP_SIGN_AUTHORIZE（企业法定代表人授权书签署认证）；
         * ORGANIZATION_ARTIFICIAL（企业人工实名）；
         * AUTHCODE（短信验证码校验）；
         * 2）经办人相关认证详情：
         * INDIVIDUAL_ARTIFICIAL（个人人工实名）；
         * FACEAUTH_ZMXY （个人人脸识别：支付宝刷脸）；
         * FACEAUTH_TECENT_CLOUD（个人人脸识别：微众刷脸）；
         * ORGANIZATION_LEGAL_REP_FACEAUTH（企业法定代表人刷脸认证）；
         * NDIVIDUAL_BANKCARD_4_FACTOR（个人银行卡四要素）；
         * INDIVIDUAL_TELECOM_3_FACTOR（个人运营商三要素）；
         */
        private String subFlowType;
        /**
         * 认证流程关联的子认证流程状态:
         * ING（进行中）；
         * SUCCESS(成功）；
         * FAIL(失败）；
         * TERMINATED(终止)；
         */
        private String status;
    }

    @Data
    public static class RelatedFlow {
        /**
         * 认证流程Id
         */
        private String flowId;
        /**
         * 流程状态 ：
         * INIT(已发起) 注：该状态下e签宝不会计费；
         * ING(进行中)；
         * SUCCESS(已成功)；
         * FAIL(已失败)；
         */
        private String flowStatus;
        /**
         * 认证流程主体:
         * ORGANIZATION（组织机构）；
         * INDIVIDUAL（个人）；
         */
        private String objectType;
        /**
         * 认证状态为失败时,失败的原因描述
         */
        private String failReason;
        /**
         * 流程最后一次状态更新时间时间戳值
         */
        private List<SignFlow> subFlows;
    }
}
